﻿using System;
using System.Collections.Generic;
using System.Text;

namespace OWA
{
    /// <summary>
    /// Summary description for Base64.
    /// </summary>
    public abstract class Base64
    {
        /// <summary>
        /// Cryptage de la chaine de caractères en Base64
        /// </summary>
        /// <param name="text">Chaine de caractères à crypter</param>
        /// <returns>Chaine cryptée</returns>
        public static string Encode(string text)
        {
            UnicodeEncoding encoding = new UnicodeEncoding();
            return System.Convert.ToBase64String(encoding.GetBytes(text));
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="text"></param>
        /// <param name="maximumCharsByLine"></param>
        /// <returns></returns>
        public static string Encode(string text, int maximumCharsByLine)
        {

            // Conversion du tableau de bytes en chaîne cryptée base64.
            StringBuilder result = new StringBuilder(Encode(text));

            // Découpage en _maxLineLength caractères
            for (int t = maximumCharsByLine; t < result.Length; t += maximumCharsByLine + 2)
            {
                result.Insert(t, "\r\n");
            }

            return result.ToString();

        }

        /// <summary>
        /// Décryptage de la chaine de caractères codée en Base64
        /// </summary>
        /// <param name="text">Chaine de caractères à décoder</param>
        /// <returns>Chaine décryptée</returns>
        public static string Decode(string text)
        {
            UnicodeEncoding encoding = new UnicodeEncoding();
            return encoding.GetString(System.Convert.FromBase64String(text.Replace("\r\n", "")));
        }


    }
}
